package com.dkd.day20250721;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main34 {
    public static void main(String[] args) {
        //题目描述：构成指定长度字符串的个数 (本题分值100)
        //给定 M（0 < M ≤ 30）个字符（a-z），从中取出任意字符（每个字符只能用一次）拼接成长度为 N（0 < N ≤ 5）的字符串，
        //
        //要求相同的字符不能相邻，计算出给定的字符列表能拼接出多少种满足条件的字符串，
        //
        //输入非法或者无法拼接出满足条件的字符串则返回0。
        //
        //输入描述
        //给定的字符列表和结果字符串长度，中间使用空格(" ")拼接
        //
        //输出描述
        //满足条件的字符串个数

        Scanner sc = new Scanner(System.in);
        String[] s = sc.nextLine().split(" ");
        String str = s[0];
        int length = Integer.parseInt(s[1]);
        solve(str, length);
    }

    public static void solve(String str,int length) {
        boolean [] used = new boolean[str.length()];
        Arrays.fill(used, false);
        Set<String> ans = new HashSet<>();
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            String cur = String.valueOf(ch);
            solve2(str,length,"",ans,used);
        }
        System.out.println(ans.size());
    }

    public static void solve2(String str,int length,String cur,Set<String> ans,boolean [] used) {
        if(cur.length()==length) {
            ans.add(cur);
            return;
        }
        for(int i=0;i<str.length();i++) {
            char ch = str.charAt(i);
            String add = String.valueOf(ch);
            if(used[i] || cur.equals(add)) {
                continue;
            }
            used[i] = true;
            solve2(str,length,add+cur,ans,used);
            used[i] = false;
        }
    }


}
